বিটওয়াইজ অপারেটর এবং অ্যাসাইনমেন্ট অপারেটর প্রোগ্রামিংয়ের দুটি ভিন্ন ধরনের অপারেটর, যা বিভিন্ন ধরনের কাজ সম্পাদন করতে ব্যবহৃত হয়। বিটওয়াইজ অপারেটর মূলত বাইনারি স্তরে কাজ করে, যেখানে অ্যাসাইনমেন্ট অপারেটর মান নির্ধারণ বা মান পরিবর্তনের জন্য ব্যবহৃত হয়।
বিটওয়াইজ অপারেটর (Bitwise Operators)
বিটওয়াইজ অপারেটর মূলত বাইনারি স্তরে কাজ করে, অর্থাৎ এটি প্রতিটি সংখ্যাকে বিট আকারে ভেঙে দেয় এবং প্রতিটি বিটের উপর কাজ করে। বিটওয়াইজ অপারেটর সাধারণত সংখ্যা সংশোধন, ইমেজ প্রসেসিং, ক্রিপ্টোগ্রাফি ইত্যাদিতে ব্যবহৃত হয়।
বিটওয়াইজ অপারেটরের প্রকারভেদ
& (AND):
- দুই বিটের মধ্যে উভয়ই
1হলে ফলাফল1হয়, অন্যথায়0হয়। - উদাহরণ:
5 & 3(৫ এর বাইনারি0101এবং ৩ এর0011) হলে ফলাফল হবে0001, অর্থাৎ1।
| (OR):
- দুই বিটের মধ্যে অন্তত একটি
1হলে ফলাফল1হয়, অন্যথায়0হয়। - উদাহরণ:
5 | 3হলে ফলাফল হবে0111, অর্থাৎ7।
^ (XOR):
- দুই বিটের একটি
1এবং অন্যটি0হলে ফলাফল1হয়, অন্যথায়0। - উদাহরণ:
5 ^ 3হলে ফলাফল হবে0110, অর্থাৎ6।
~ (NOT):
- প্রতিটি বিট উল্টে দেয়, অর্থাৎ
1কে0এবং0কে1করে। - উদাহরণ:
~5হলে ফলাফল হবে-6(সাইনড দুই-এর কমপ্লিমেন্টে)।
<< (Left Shift):
- প্রতিটি বিটকে নির্দিষ্ট সংখ্যক স্থানে বাঁ দিকে সরায়। প্রতিটি স্থান সরানোর ফলে সংখ্যাটি
2দ্বারা গুণ হয়। - উদাহরণ:
5 << 1(বাঁ দিকে ১ বার সরানো) হলে ফলাফল হবে10।
>> (Right Shift):
- প্রতিটি বিটকে নির্দিষ্ট সংখ্যক স্থানে ডানে সরায়। প্রতিটি স্থান সরানোর ফলে সংখ্যাটি
2দ্বারা ভাগ হয়। - উদাহরণ:
5 >> 1(ডানে ১ বার সরানো) হলে ফলাফল হবে2।
অ্যাসাইনমেন্ট অপারেটর (Assignment Operators)
অ্যাসাইনমেন্ট অপারেটর সাধারণত একটি ভেরিয়েবলে মান নির্ধারণ করতে ব্যবহৃত হয়। অ্যাসাইনমেন্ট অপারেটরগুলো মাধ্যমে ভেরিয়েবলের মান নির্ধারণ করা বা বিদ্যমান মানে নির্দিষ্ট পরিবর্তন করা সম্ভব।
অ্যাসাইনমেন্ট অপারেটরের প্রকারভেদ
= (Simple Assignment):
- একটি ভেরিয়েবলে সরাসরি মান প্রদান করে।
- উদাহরণ:
int a = 5;
+= (Add and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের সাথে নতুন মান যোগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a += 3;(যদিaএর মান5থাকে, তবে এখনaহবে8)
-= (Subtract and Assignment):
- ভেরিয়েবলের বিদ্যমান মান থেকে নির্দিষ্ট মান বিয়োগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a -= 2;(যদিaএর মান8থাকে, তবে এখনaহবে6)
*= (Multiply and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের সাথে নির্দিষ্ট মান গুণ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a *= 2;(যদিaএর মান6থাকে, তবে এখনaহবে12)
/= (Divide and Assignment):
- ভেরিয়েবলের বিদ্যমান মান নির্দিষ্ট মান দিয়ে ভাগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a /= 3;(যদিaএর মান12থাকে, তবে এখনaহবে4)
%= (Modulus and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের ভাগশেষ বের করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a %= 3;(যদিaএর মান4থাকে, তবে এখনaহবে1)
বিটওয়াইজ এবং অ্যাসাইনমেন্ট অপারেটরের সারসংক্ষেপ
| অপারেটর | নাম | কাজ |
|---|---|---|
& | বিটওয়াইজ AND | প্রতিটি বিটের মধ্যে AND করে। |
| ` | ` | বিটওয়াইজ OR |
^ | বিটওয়াইজ XOR | প্রতিটি বিটের মধ্যে XOR করে। |
~ | বিটওয়াইজ NOT | প্রতিটি বিট উল্টে দেয়। |
<< | লেফট শিফট | বাঁ দিকে বিট সরিয়ে সংখ্যাটিকে গুণ করে। |
>> | রাইট শিফট | ডানে বিট সরিয়ে সংখ্যাটিকে ভাগ করে। |
= | এসাইনমেন্ট | মান সেট করে। |
+= | যোগ এবং এসাইনমেন্ট | বিদ্যমান মানের সাথে যোগ করে সেটি সংরক্ষণ করে। |
-= | বিয়োগ এবং এসাইনমেন্ট | বিদ্যমান মান থেকে বিয়োগ করে সেটি সংরক্ষণ করে। |
*= | গুণ এবং এসাইনমেন্ট | বিদ্যমান মানের সাথে গুণ করে সেটি সংরক্ষণ করে। |
/= | ভাগ এবং এসাইনমেন্ট | বিদ্যমান মান ভাগ করে সেটি সংরক্ষণ করে। |
%= | মডুলাস এবং এসাইনমেন্ট | ভাগশেষ বের করে সেটি সংরক্ষণ করে। |
উপসংহার
বিটওয়াইজ অপারেটর বিট স্তরে কাজ করার জন্য কার্যকর, যা সংখ্যা সংশোধন, ক্রিপ্টোগ্রাফি ইত্যাদিতে ব্যবহৃত হয়। অ্যাসাইনমেন্ট অপারেটর ভেরিয়েবলের মান নির্ধারণ ও পরিবর্তনের জন্য ব্যবহৃত হয়, যা প্রোগ্রামিংয়ে অনেকটাই সহজ ও সময় সাশ্রয়ী করে।
Read more